package postacie;

import przedmioty.Bron;
import przedmioty.Plecak;
import przedmioty.Zbroja;
import wyjatki.BrakBroni;
import wyjatki.BrakZbroi;

public class Bohater extends Postac {
    private Zbroja aktualnaZbroja;
    private Bron aktualnaBron;
    private Plecak plecak;

    public Bohater(String imie, int liczbaHP, Zbroja aktualnaZbroja, Bron aktualnaBron, Plecak plecak) {
        super(imie, liczbaHP);
        this.aktualnaZbroja = aktualnaZbroja;
        this.aktualnaBron = aktualnaBron;
        this.plecak = plecak;
    }

    @Override
    public int atak() throws BrakBroni {
        if (aktualnaBron == null)
            throw new BrakBroni("Bohater nie ma broni!");
        else
            return aktualnaBron.getSilaObrazen();
    }

    @Override
    public boolean obrona(int obrazenia) throws BrakZbroi {
        if (aktualnaZbroja == null)
            throw new BrakZbroi("Bohater nie ma zbroi!");
        else if (getLiczbaHP() - obrazenia + aktualnaZbroja.getZmniejszanieObrazen() > 0) {
            setLiczbaHP(getLiczbaHP() - obrazenia + aktualnaZbroja.getZmniejszanieObrazen());
            System.out.println("Bohater doznaje obrażenia o wartości " + (obrazenia - aktualnaZbroja.getZmniejszanieObrazen())
                    + " i a teraz " + getLiczbaHP() + " HP");
            return true;
        } else {
            return false;
        }
    }

    public Zbroja getAktualnaZbroja() {
        return aktualnaZbroja;
    }

    public void setAktualnaZbroja(Zbroja aktualnaZbroja) {
        this.aktualnaZbroja = aktualnaZbroja;
    }

    public Bron getAktualnaBron() {
        return aktualnaBron;
    }

    public void setAktualnaBron(Bron aktualnaBron) {
        this.aktualnaBron = aktualnaBron;
    }

    public Plecak getPlecak() {
        return plecak;
    }

    public void setPlecak(Plecak plecak) {
        this.plecak = plecak;
    }

    @Override
    public String toString() {
        return "Bohater{" +
                "aktualnaZbroja=" + aktualnaZbroja +
                ", aktualnaBron=" + aktualnaBron +
                ", plecak=" + plecak +
                "} " + super.toString();
    }
}
